package com.yuncheng.spcyApi.service;

import com.yuncheng.spcyApi.entity.SpcySqsxWjjl;
import com.yuncheng.common.base.service.BaseService;
import com.yuncheng.vo.CurrentUserVo;
import com.yuncheng.spcyApi.vo.wj.WjjlVo;

import java.util.List;

/**
 * @Description: 审评查验-文件记录
 * @Author: csx
 * @Date: 2023-03-03
 * @Version: V1.0
 */
public interface ISpcySqsxWjjlService extends BaseService<SpcySqsxWjjl> {

    // 获取对应分类的文件目录
    List<WjjlVo> findWjjlList(WjjlVo wjjlVo);

    /**
     * 查询文件目录
     * @param fpid 业务id
     * @param fywflcode 目录分类
     * @param mlmc 目录名称
     * @param sftscl 必填/是否推送
     * @return
     */
    List<WjjlVo> findBtWjjlList(String fpid, String fywflcode, String mlmc, String sftscl);

    /**
     * 查询用户签名列表
     * @param userid 用户id
     * */
    List<SpcySqsxWjjl> findUserQmList(String userid);

    /**
     * 查询用户照片列表
     * @param userid 用户id
     * */
    List<SpcySqsxWjjl> findUserPhotoList(String userid);

    /**
     * 查询用户检查员证件列表
     * @param userid 用户id
     * */
    List<SpcySqsxWjjl> findUserJcyZjList(String userid);

    /**
     * 下载用户签名
     * @param userid 用户的id
     * @param currentUser
     * @return 文件路径
     */
    SpcySqsxWjjl downMyUserQm(String userid, CurrentUserVo currentUser);

    /**
     * 下载用户照片
     * @param userid 用户的id
     * @param currentUser
     * @return 文件路径
     */
    SpcySqsxWjjl downMyUserPhoto(String userid, CurrentUserVo currentUser);

    /**
     * 下载用户检查员证件
     * @param userid 用户的id
     * @param currentUser
     * @return 文件路径
     */
    SpcySqsxWjjl downMyUserJcyZj(String userid, CurrentUserVo currentUser);


    /**
     * 更新文件记录-文件推送状态
     */
    void updateWjjlByWjlx5(List<String> idsList);

    /**
     * 获取制作中的文件记录
     * @param pid
     * @param type1
     * @return
     */
    List<SpcySqsxWjjl> getWjjlListInZzz(String pid, String type1, boolean isZzz);

    /**
     * 获取同步文档中的文件记录
     * @param pid
     * @param type1
     * @param orderDescCreateTime 是否降序排序
     * @return
     */
    List<SpcySqsxWjjl> getTbwdWjjlListByFwjlx2(String pid, String type1, boolean orderDescCreateTime);

    /**
     * 获取同步文档中的文件记录(完成)
     * @param pid
     * @param type1
     * @param orderDescCreateTime 是否降序排序
     * @return
     */
    List<SpcySqsxWjjl> getTbWcWjjlListByFwjlx2(String pid, String type1, boolean orderDescCreateTime);

    /**
     * 获取历史的文件记录
     * @param pid
     * @param type1
     * @param orderDescCreateTime 是否降序排序
     * @return
     */
    List<SpcySqsxWjjl> getHistoryWjjlList(String pid, String type1, boolean orderDescCreateTime);

    /**
     * 获取文件记录
     * @param pid
     * @param type1
     * @param isOrder 是否排序
     * @return
     */
    List<SpcySqsxWjjl> getWjjlListByPidAndType(String pid, String type1, boolean isOrder);

    /**
     *  更新同步文档中的文件记录-改为完成状态
     */
    void updateWjjlByTbwdz(String pid, String type1);

    /**
     * 更新文件记录-发送短信状态
     */
    void updateWjjlByFdxzt(String id);

    /**
     * 更新文件记录-发送邮箱状态
     */
    void updateWjjlByFyxzt(String id);

    /**
     * 构建文件记录-生成pdf
     */
    SpcySqsxWjjl genWjjlByScpdf(SpcySqsxWjjl wjjl, String fcflj, String fjdcflj, String fwjccmc);

    /**
     * 构建文件记录-盖章
     */
    SpcySqsxWjjl genWjjlByPdfGz(SpcySqsxWjjl wjjl, String fcflj, String fwjccmc);

    /**
     * 构建文件记录-生成pdf并盖章
     */
    SpcySqsxWjjl genWjjlByScpdfAndGz(SpcySqsxWjjl wjjl, String fcflj, String fjdcflj, String fwjccmc, boolean isGz);

    /**
     * 批量插入被合并申请事项文件记录
     */
    void batchInsertBhbsxWjjlList(List<SpcySqsxWjjl> bhbSxWjList);

    /** 查询申请事项文件记录-根据多个文件类型1查询 */
    List<SpcySqsxWjjl> findWjjlListByFwjlx1(List<String> list, String fpid);

    /** 查询申请事项文件记录-根据多个文件类型1和文件类型7 查询 */
    List<SpcySqsxWjjl> findWjjlListByFwjlx1AndFwjlx7(List<String> list, String fpid, String fwjlx7);

    /** 查询申请事项文件记录基本信息-根据多个文件类型1查询 */
    List<SpcySqsxWjjl> findWjjlJbxxListByFwjlx1(List<String> list, String fpid);

    /** 初始化申请事项文件记录 */
    void intiAndSaveInitSqsxWjjl(String sqsxid, String type, String fwjlx, String wjxsmc, String wjccmc, String cflj);

    /** 初始化申请事项文件记录 */
    SpcySqsxWjjl initSaveSqsxWjjl(String sqsxid, String type, String fwjlx, String wjxsmc, String wjccmc, String cflj, String fwjlx7);

    /** 查询申请事项文件类型2列表-根据业务id和文件类型1 */
    List<String> findFwjlx2ByFpidAndFwjlx1(String fpid, String fwjlx1);

    /** 构建自定义文件记录(非真实文件记录) */
    SpcySqsxWjjl genDefinedWjjlWithUnReal(String fpid, String type, String fwjlx, String wjxsmc);

    /** 验证文件记录是否存在 */
    List<String> verifyExistsWjjl(String fpid, String type);

    /** 验证文件记录是否已经签字 */
    List<String> verifySfQzWjjl(String fpid, String fwjlx1);
}
